package com.gaussian.property.module.biz.enums;

/**
 * 定义枚举类型，用于比较运算符
 * @author songqi
 */
public enum ComparisonOperator {
    // 大于
    gt,
    // 大于等于
    ge,
    // 等于
    eq,
    // 小于
    lt,
    // 小于等于
    le;

    // 定义比较方法
    public boolean compare(Number variableValue, Number referenceValue) {
        // 将 Number 类型转换为 Double 进行比较，确保兼容所有数值类型
        double varValue = variableValue.doubleValue();
        double refValue = referenceValue.doubleValue();
        switch (this) {
            case gt:
                return varValue > refValue;
            case ge:
                return varValue >= refValue;
            case eq:
                return varValue == refValue;
            case lt:
                return varValue < refValue;
            case le:
                return varValue <= refValue;
            default:
                throw new IllegalArgumentException("Unsupported comparison operator");
        }
    }
}
